Synchronizacja XML
Synchronizacja - uruchamianie
1. W folderze z systemem znajduje się folder /lib/XMLsynch
2. W tym folderze znajdują się 2 pliki konfiguracyjne, które nas interesują:
a) config.php.org
b) config.pgsql.php.org
3. Należy zmienić nazwy tych plików na odpowiednio:(lub utworzyć kopię, aby w razie awarii mieć wzór pliku)
a) config.php
b) config.pgsql.php
4. Po zmianie nazwy wchodzimy do pliku config.pgsql.php
, a następnie podajemy dane do bazy systemu, gdzie:
$pgHOST
to adres IP serwera (domyślnie localhost)
$pgUSER
nazwa użytkownika bazy danych
$pgPASS
hasło użytkownika bazy danych
$pgPORT
port na którym nasłuchuje baza
$pgDB
nazwa bazy danych
Przy uzupełnianiu tego pliku należy pamiętać o pojedynczych cudzysłowach oraz średnikach kończących linie (obowiązuje tutaj składnia języka PHP)
5. Po uzupełnieniu danych tworzymy 3 foldery z prawem do zapisu i odczytu.
a) upload (tutaj będą trafiać pliki XML)
b) backup (tutaj pliki będą backupowane)
c) enqueue (tutaj system będzie ciąć duże pliki xml na mniejsze i przechowywać ID tych plików w bazie - tabela xml_files_queue
)
6. Po utworzeniu folderów należy wrócić do folderu XMLsynch i otworzyć plik config.php
.
Trzy pierwsze linie kodu odpowiadają za dostęp do folderów które wcześniej utworzyliśmy(należy podać teraz prawidłowe ścieżki to tych folderów)
7. Linia 4 mówi o folderze gdzie znajdują się odpowiednie metody (funkcje) do działania synchronizacji. Domyślnie jest to zawsze /XMLsynch/methods/
Tutaj również obowiązuje składnia języka PHP, należy zwrócić szczególna uwagę na pojedyncze cudzysłowie oraz slashe.
8. Linia define('SYNCH_LOG_LEVEL', 4);
mówi nam ile komunikatów chcemy widzieć w synchronizacji. 0 - wszystkie, 4 - tylko błędy.
Niezalecane jest włączanie poziomu 0 ponieważ log synchronizacji bardzo szybko rośnie do rozmiarów kilku gigabajtów, jeżeli synchronizacja jest wykonywana 24/h.
9. Po utworzeniu plików konfiguracyjnych należy stworzyć plik o nazwie start_xml.sh
, a w nim nastepujące dane:
cd sciezka_do_folderu_systemu/lib/XMLsynch<br/>
php cliDoSynchronize.php | tee -a sciezka_do_pliku_log/import-xml.log
czyli np.
cd /var/www/system/lib/XMLsynch<br/>
php cliDoSynchronize.php | tee -a /var/www/system/lib/XMLsynch/import-xml.log
jeżeli nie mamy na linuxie zainstalowanej komendy też należy ja zainstalować.
10. Z poziomu shela wydajemy komendę jako root: sh start_xml.sh
Synchronizacja startuje.
Bardzo przydaje się również użycie programu screen który uruchamiany jest z poziomu terminala. Pozwala on uruchomić synchronizację w tle
przez co okno terminala nie musi być cały czas uruchomione.
Program wywołujemy komendę screen
Po uruchomieniu synchronizacji (pkt 10) wybieramy jednocześnie na klawiaturze przyciski ctrl
shift
a
, puszczamy ten klawisze i wybieramy literę d
Należy pamiętać, aby w php włączony był moduł XML, ponieważ bez niego synchronizacja może się nie uruchomić
Tworzenia dokumentu XML i integracja bazy danych
Dokumentacja dot. tworzenia dokumentu XML znajduje się w plikach systemu, w folderze doc/xml/
Kiedy dokument jest już utworzony należy powiadomić synchronizację XML, które moduły ma wgrywać do bazy(może to być tylko np. produkt, lub stan magazynowy)
W tabeli xml_synch_api_method
wprowadzamy nazwy, które umieściliśmy w pliku XML.
api_method_id
- id z tabeli xml_synch_api_key_to_api_method
method_name
oraz xml_method_name
to nagłówki z dokumentacji XML.
method_description
uzupełniamy wg własnych potrzeb.
xml_method_parameters
- pozostawiamy puste
parameters_quantity
- pozostawiamy puste
description
- pozostawiamy puste
Tabela: xml_synch_api_key
api_key_id
- dowolny id
key_value
klucz który tworzymy qg dokumentacji XML
key_owner
- właściciel klucza
is_active
- czy klucz jest aktywny (TRUE/FALSE)
active_from
- od kiedy klucz ma być aktywny
active_to
- do kiedy ma być aktywny
last_usage
- pozostawiamy puste
hosts_available
- adresy IP z jakich synchronizacja ma sie łączyć (mogą być rozdzielone przecinkiem)
Tabela: xml_synch_api_key_to_api_method
id
- dowolne
api_key_id
- api_key_id z tabeli xml_synch_api_key
api_method_id
- api_method_id z tabeli xml_synch_api_method
is_active
- czy klucz jest aktywny (TRUE/FALSE)
active_from
- od kiedy klucz ma być aktywny
active_to
- do kiedy ma być aktywny